package com.mrx.tunnel.model;

import jakarta.annotation.Nonnull;
import lombok.Data;
import org.apache.commons.codec.binary.Base64;

import java.util.List;
import java.util.stream.Stream;

/**
 * @author Mr.X
 * @since 2024/8/31 08:19
 */
@Data
public class TunnelRequest {
    /**
     * 数据库文件
     */
    private String dbfile;
    /**
     * 执行的动作
     */
    private String actn;
    /**
     * 查询 sql
     */
    private String[] q;
    /**
     * 是否以 base64 编码 查询语句
     */
    private boolean encodeBase64;

    /**
     * 版本
     */
    private String version;

    /**
     * 判断请求参数是否有效
     */
    public boolean isRestRequest() {
        return dbfile != null && actn != null;
    }

    /**
     * 获取查询语句
     */
    @Nonnull
    public List<String> getQueries() {
        if (q == null || q.length == 0) {
            return List.of();
        }
        if (encodeBase64) {
            return Stream.of(q).map(Base64::decodeBase64).map(String::new).toList();
        }
        return List.of(q);
    }
}
